/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dio.com.dao;

import dio.com.dao.conexao.AcessoCM;
import dio.com.model.bean.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Diogenes
 */
public class MetasDAO {

    PreparedStatement pstm;
    ResultSet rs;
    Connection con;
    String inserirMetas = "INSERT INTO `controledeatividades`.`meta` "
            + "(`PERIODO_idPERIODO`,`IMPOSTO_ID_IMPOSTO`,`META`,`tipo_idTIPO`,`atividade_idATIVIDADE`) "
            + "VALUES(?,?,?,?,?)";
    String editarMetas = "UPDATE `controledeatividades`.`meta` SET `META` = ? "
            + "WHERE `PERIODO_idPERIODO` = ? AND `IMPOSTO_ID_IMPOSTO` = ? AND tipo_idTIPO = ? "
            + "AND atividade_idATIVIDADE = ?";
    String verificarMetas = "SELECT PERIODO_idPERIODO FROM meta WHERE PERIODO_idPERIODO = ? "
            + "AND IMPOSTO_ID_IMPOSTO = ? AND tipo_idTIPO = ? AND atividade_idATIVIDADE = ?";
    String carregarMetas = "SELECT * FROM meta WHERE PERIODO_idPERIODO = ? AND tipo_idTIPO = ? AND atividade_idATIVIDADE = ?";

    public void inserirMetas(Meta meta, Connection con) {
        try {
            pstm = con.prepareStatement(inserirMetas);
            pstm.setInt(1, meta.getPeriodo().getId());
            pstm.setInt(2, meta.getImposto().getId());
            pstm.setString(3, meta.getValorMeta());
            pstm.setInt(4, meta.getTipo().getId());
            pstm.setInt(5, meta.getAtividade().getId());
            pstm.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void editarMetas(Meta meta, Connection con) {
        try {
            pstm = con.prepareStatement(editarMetas);
            pstm.setString(1, meta.getValorMeta());
            pstm.setInt(2, meta.getPeriodo().getId());
            pstm.setInt(3, meta.getImposto().getId());
            pstm.setInt(4, meta.getTipo().getId());
            pstm.setInt(5, meta.getAtividade().getId());
            pstm.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //METODO QUE VERIFICA SE É UMA ALTERACAO OU INSERCAO DE UM META

    public boolean existeMetas(Meta meta, AcessoCM mysql) {
        try {
            pstm = mysql.conectar().prepareStatement(verificarMetas);
            pstm.setInt(1, meta.getPeriodo().getId());
            pstm.setInt(2, meta.getImposto().getId());
            pstm.setInt(3, meta.getTipo().getId());
            pstm.setInt(4, meta.getAtividade().getId());
            rs = pstm.executeQuery();
            while (rs.next()) {
                mysql.desconectar();
                return true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        mysql.desconectar();
        return false;
    }

    public List<Meta> carregarMeta(Meta meta) {
        List<Meta> metas = new ArrayList<Meta>();
        try {
            AcessoCM mysql = new AcessoCM();
            pstm = mysql.conectar().prepareStatement(carregarMetas);
            pstm.setInt(1, meta.getPeriodo().getId());
            pstm.setInt(2, meta.getTipo().getId());
            pstm.setInt(3, meta.getAtividade().getId());
            rs = pstm.executeQuery();
            while (rs.next()) {
                Meta metas2 = new Meta();
                Periodo periodo = new Periodo();
                Atividade atividade = new Atividade();
                Imposto imposto = new Imposto();
                Tipo tipo = new Tipo();
                atividade.setId(rs.getInt("atividade_idATIVIDADE"));
                imposto.setId(rs.getInt("IMPOSTO_ID_IMPOSTO"));
                tipo.setId(rs.getInt("tipo_idTIPO"));
                metas2.setValorMeta(rs.getString("META"));
                metas2.setPeriodo(periodo);
                metas2.setImposto(imposto);
                metas2.setAtividade(atividade);
                metas2.setTipo(tipo);
                metas.add(metas2);
            }
            mysql.desconectar();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return metas;
    }
}
